import 'package:get/get.dart';

import '../modules/auth/auth_cgs/bindings/auth_cgs_binding.dart';
import '../modules/auth/auth_cgs/views/auth_cgs_view.dart';
import '../modules/auth/auth_fws/bindings/auth_fws_binding.dart';
import '../modules/auth/auth_fws/views/auth_fws_view.dart';
import '../modules/auth/auth_fy/bindings/auth_fy_binding.dart';
import '../modules/auth/auth_fy/views/auth_fy_view.dart';
import '../modules/auth/auth_gr/bindings/auth_gr_binding.dart';
import '../modules/auth/auth_gr/views/auth_gr_view.dart';
import '../modules/auth/auth_gys/bindings/auth_gys_binding.dart';
import '../modules/auth/auth_gys/views/auth_gys_view.dart';
import '../modules/auth/auth_hdgs/bindings/auth_hdgs_binding.dart';
import '../modules/auth/auth_hdgs/views/auth_hdgs_view.dart';
import '../modules/auth/bindings/auth_binding.dart';
import '../modules/auth/views/auth_view.dart';
import '../modules/home/bindings/home_binding.dart';
import '../modules/home/views/home_view.dart';
import '../modules/login/bindings/login_binding.dart';
import '../modules/login/forgot/bindings/forgot_binding.dart';
import '../modules/login/forgot/views/forgot_view.dart';
import '../modules/login/register/bindings/register_binding.dart';
import '../modules/login/register/views/register_view.dart';
import '../modules/login/register_info/bindings/register_info_binding.dart';
import '../modules/login/register_info/views/register_info_view.dart';
import '../modules/login/views/login_view.dart';
import '../modules/main_tab/bindings/main_tab_binding.dart';
import '../modules/main_tab/views/main_tab_view.dart';
import '../modules/message/bindings/message_binding.dart';
import '../modules/message/views/message_view.dart';
import '../modules/profile/bindings/profile_binding.dart';
import '../modules/profile/views/profile_view.dart';
import '../modules/image_viewer/bindings/image_viewer_binding.dart';
import '../modules/image_viewer/views/image_viewer_view.dart';
import '../modules/shop/product_detail/bindings/product_detail_binding.dart';
import '../modules/shop/product_detail/views/product_detail_view.dart';
import '../modules/shop/search/bindings/search_binding.dart';
import '../modules/shop/search/views/search_view.dart';
import '../modules/shop/bindings/shop_binding.dart';
import '../modules/shop/views/shop_view.dart';
import '../modules/shop/cart/bindings/cart_binding.dart';
import '../modules/shop/cart/views/cart_view.dart';
import '../modules/webview/bindings/webview_binding.dart';
import '../modules/webview/views/webview_view.dart';
import '../modules/workbench/bindings/workbench_binding.dart';
import '../modules/workbench/views/workbench_view.dart';
import '../modules/home_hd/bindings/home_hd_binding.dart';
import '../modules/home_hd/views/home_hd_view.dart';

part 'app_routes.dart';

class AppPages {
  AppPages._();

  static const initial = Routes.MAIN_TAB;

  static final routes = [
    GetPage(
      name: _Paths.LOGIN,
      page: () => const LoginView(),
      binding: LoginBinding(),
      children: [
        GetPage(
          name: _Paths.REGISTER,
          page: () => const RegisterView(),
          binding: RegisterBinding(),
        ),
        GetPage(
          name: _Paths.FORGOT,
          page: () => const ForgotView(),
          binding: ForgotBinding(),
        ),
        GetPage(
          name: _Paths.REGISTER_INFO,
          page: () => const RegisterInfoView(),
          binding: RegisterInfoBinding(),
        ),
      ],
    ),
    GetPage(
      name: Routes.MAIN_TAB,
      page: () => const MainTabView(),
      binding: MainTabBinding(),
      children: [
        GetPage(name: Routes.HOME, page: () => const HomeView()),
        GetPage(name: Routes.HOME_HD, page: () => const HomeHdView()),
        GetPage(name: Routes.WORKBENCH, page: () => const WorkbenchView()),
        GetPage(name: Routes.MESSAGE, page: () => const MessageView()),
        GetPage(name: Routes.PROFILE, page: () => const ProfileView()),
      ],
      bindings: [
        HomeBinding(),
        HomeHdBinding(),
        WorkbenchBinding(),
        MessageBinding(),
        ProfileBinding(),
      ],
    ),
    GetPage(
      name: Routes.WEBVIEW,
      page: () => const WebViewPage(),
      binding: WebViewBinding(),
    ),
    GetPage(
      name: _Paths.AUTH,
      page: () => const AuthView(),
      binding: AuthBinding(),
      children: [
        GetPage(
          name: _Paths.AUTH_GYS,
          page: () => const AuthGysView(),
          binding: AuthGysBinding(),
        ),
        GetPage(
          name: _Paths.AUTH_CGS,
          page: () => const AuthCgsView(),
          binding: AuthCgsBinding(),
        ),
        GetPage(
          name: _Paths.AUTH_HDGS,
          page: () => const AuthHdgsView(),
          binding: AuthHdgsBinding(),
        ),
        GetPage(
          name: _Paths.AUTH_FWS,
          page: () => const AuthFwsView(),
          binding: AuthFwsBinding(),
        ),
        GetPage(
          name: _Paths.AUTH_FY,
          page: () => const AuthFyView(),
          binding: AuthFyBinding(),
        ),
        GetPage(
          name: _Paths.AUTH_GR,
          page: () => const AuthGrView(),
          binding: AuthGrBinding(),
        ),
      ],
    ),
    GetPage(
      name: _Paths.SHOP,
      page: () => const ShopView(),
      binding: ShopBinding(),
    ),
    GetPage(
      name: _Paths.SEARCH,
      page: () => const SearchView(),
      binding: SearchBinding(),
    ),
    GetPage(
      name: _Paths.PRODUCT_DETAIL,
      page: () => const ProductDetailView(),
      binding: ProductDetailBinding(),
    ),
    GetPage(
      name: _Paths.IMAGE_VIEWER,
      page: () => const ImageViewerView(),
      binding: ImageViewerBinding(),
    ),
    GetPage(
      name: _Paths.CART,
      page: () => const CartView(),
      binding: CartBinding(),
    ),
    GetPage(
      name: _Paths.HOME_HD,
      page: () => const HomeHdView(),
      binding: HomeHdBinding(),
    ),
  ];
}
